package Lee_code;

import java.util.Arrays;

/**
 * @author blh
 * @date 2024年06月28日 17:00
 */
public class Lee_322_628 {

    public int coinChange(int[] coins, int amount) {
        int len = coins.length;
        Arrays.sort(coins);
        // 转化为背包问题, dp数组是存amount最少的硬币个数
        // 先物品, 后背包
        int[] dp = new int[amount + 1];
        Arrays.fill(dp, 99999);
        for (int i = 0; i < len; i++) {
            for (int j = coins[i]; j <= amount; j++) {
                dp[j] = Math.min(dp[j], dp[j - coins[i]] + 1);
            }
        }
        return dp[amount] == 0 ? -1 : dp[amount];
    }
}
